home *** CD-ROM | disk | FTP | other *** search
/ NASA Climatology Interdisciplinary Data Collection / NASA Climatology Interdisciplinary Data Collection - Disc 1.iso / cdrom.gui < prev    next >
Text File  |  1998-04-06  |  16KB  |  298 lines

  1. #  cdrom.gui - last revision: Jan 14, 1998
  2. #
  3. #  Sample widget script for the CIDC CDROM.
  4. #
  5. #  How to invoke this script:
  6. #
  7. #  At startup. Set the enviroment variable GAGUI with the
  8. #  name of the script file, e.g., 
  9. #
  10. #  % setenv GAGUI cdrom.gui
  11. #
  12. #  At the GrADS command line prompt. Simply type
  13. #
  14. #  ga> gui cdrom.gui
  15. #
  16. #  Of course, you must have a version of GrADS built with
  17. #  Athena Widgets support.
  18. #
  19. #  (c) 1997 Arlindo da Silva   (dasilva@gsfc.nasa.gov)
  20. #
  21. #              *** Copy freely but DO NOT sell ***
  22. #
  23. #  See also sample.gui.
  24. #.........................................................................
  25.  
  26. #  Most "exec" commands are supported
  27. #  ----------------------------------
  28.    set gxout shaded
  29.  
  30. # A "label" is an inactive widget which display some text, 
  31. # e.g., an informative  title. The first argument, "root"
  32. # in this case, is the name you give to the widget so that
  33. # you can refer to it later on
  34. # -------------------------------------------------------
  35.   MakeLabel(root,"CIDC CDROM I")
  36.  
  37. # This command creates a dropdown menu called " File... "
  38. # as usual, the first argument "file" is the name of the
  39. # widget
  40. # -------------------------------------------------------
  41.   MakeMenu ( file, "File" )
  42.  
  43. # Once you make a memu, you create its items. For the first item:
  44. # --------------------------------------------------------------
  45.       MakeMenuItem(open, file, "Open", Load, "open")
  46.  
  47. # The parameters this particular item are:
  48. #     open    the name of the item widget
  49. #     file    the menu the item belongs to (see MakeMenu above)
  50. #     "Open"  This is the text it displays on the screen
  51. #     Load    this is the callback name, i.e., the widget invokes
  52. #             this function when pressed. This particular callback
  53. #             pops up a "file finder" widget, and after the user
  54. #             clicks on a file name it executes the grads command
  55. #             "open" (see last argument) on this file. A list
  56. #             of the other available callbacks can be found in the
  57. #             end of this file.
  58. #     "open"  Argument to be passed to the callback. In this 
  59. #             particular case, it is the GrADS command to be
  60. #             executed on the file.
  61. #  The definition of the other items in this menu follows.
  62.       MakeMenuItem(fsel, file, "File Selection ", FileSel, NULL )
  63.       MakeMenuItem(browse, file, "View Text File", Browse, NULL)
  64.       MakeMenuItem(junk, file, "_______________", NULL, NULL )
  65.       MakeMenuItem(exec, file, "Exec", Load, "exec")
  66.       MakeMenuItem(run, file, "Run", Load, "run")
  67.       MakeMenuItem(gui, file, "GUI", Load, "gui")
  68.       MakeMenuItem(junk, file, "_______________", NULL, NULL )
  69.       MakeMenuItem(init, file, "Reinit", Cmd, "reinit")
  70.       MakeMenuItem(exit, file, "Exit", Cmd, "quit")
  71.  
  72. # A menu with assorted internal options
  73. # -------------------------------------
  74.   MakeMenu ( options, "Options" )
  75.       MakeMenuItem(map, options, "Continental Boundaries on/off",  CmdStr, "set mpdraw " )
  76.       MakeMenuItem(tit, options, "Draw Title", CmdStr, "draw title " )
  77.       MakeMenuItem(cbar, options, "Color Bar", Cmd, "run cbarn" )
  78.       MakeMenuItem(junk, options, "_______________", NULL, NULL )
  79.       MakeMenuItem(shade, options, "Shaded", Cmd, "set gxout shaded" )
  80.       MakeMenuItem(cont, options, "Contour", Cmd, "set gxout contour" )
  81.       MakeMenuItem(grfill, options, "Grid Fill", Cmd, "set gxout grfill" )
  82.       MakeMenuItem(grvals, options, "Grid Values", Cmd, "set gxout grid" )
  83.       MakeMenuItem(vec, options, "Vector", Cmd, "set gxout vector" )
  84.       MakeMenuItem(line, options, "Line Plot", Cmd, "set gxout line" )
  85.       MakeMenuItem(bar, options, "Bar Chart", Cmd, "set gxout bar" )
  86.  
  87. # Creates simple buttons. Buttons work pretty much like menu items
  88. # but they do not belong to any menu and are directly clickable.
  89. # ------------------------------------------------------------------
  90.   MakeButton( clear, "Clear", Cmd, "clear" )
  91.   MakeButton( quit, "Quit", Cmd, "quit" )
  92.   MakeButton( prompt, "ga>", CmdWin, NULL )
  93.  
  94. # A menu for defining GrADS dimensions. This is very crude right now.
  95. # I will be developing a specific callback with rubber bands
  96. # etc. for these functions. Stay tuned. 
  97. # ------------------------------------------------------------------
  98.   MakeMenu( dim, "Dim")
  99.       MakeMenuItem(lat, dim, "Latitude", CmdStr, "set lat " )
  100.       MakeMenuItem(lon, dim, "Longitude", CmdStr, "set lon " )
  101.       MakeMenuItem(time, dim, "Time", CmdStr, "set time " )
  102.       MakeMenuItem(junk, dim, "_________", NULL, NULL )
  103.       MakeMenuItem(x, dim, "x", CmdStr, "set x " )
  104.       MakeMenuItem(y, dim, "y", CmdStr, "set y " )
  105.       MakeMenuItem(t, dim, "t", CmdStr, "set t " )
  106.  
  107. # Frequently used buttons (and toggle)
  108. # -----------------------------------
  109.   MakeButton( var, "Var", VarSel, NULL )
  110.   MakeToggle( hold, "Hold", FALSE, NULL, Toggle, "hold" )
  111.   MakeButton( prev, " << ", Display, "<<" )
  112.   MakeButton( displ, "Display", Display, "DISPLAY" )
  113.   MakeButton( next, " >> ", Display, ">>" )
  114.   MakeButton( rein, "Reinit", Cmd, "reinit")
  115.   MakeButton( fresh, "Fresh", Cmd, "  ")
  116.  
  117. # CIDC CD-ROM I menu's
  118. # -------------
  119.   MakeMenu(ac, "Atmosphere")
  120.       MakeMenuItem(tm, ac, "TOMS Ozone",  Open, "open data/atmo_constituents/toms_ozone/tomsn7.o3.1nmegg.ctl" )      
  121.  
  122.   MakeMenu(bi, "Biosphere")
  123.       MakeMenuItem(av, bi, "AVHRR Pathfinder NDVI",  Open, "open data/biosphere/avhrr_ndvi/avhrr_pf.ndvi.1nmegl.ctl" )      
  124.       MakeMenuItem(xx, bi, "_______________________________",  NULL, NULL )
  125.       MakeMenuItem(cz, bi, "CZCS Monthly Ocean Pigment Concentration",  Open, "open data/biosphere/czcs_color/czcs.chlrcn.1nmego.ctl" )      
  126.       MakeMenuItem(cm, bi, "CZCS Climate monthly Ocean Pigment Concentration", Open, "open data/biosphere/czcs_color/climate/czcs.chlrcn.1ncego.ctl" )      
  127.       MakeMenuItem(cc, bi, "CZCS Climate Ocean Pigment Concentration",  Open, "open data/biosphere/czcs_color/climate/czcs.chlrcn.1nxego.ctl" )      
  128.       MakeMenuItem(xx, bi, "_______________________________",  NULL, NULL )
  129.       MakeMenuItem(lc, bi, "ISLSCP Land Cover",  Open, "open data/biosphere/land_cover/islscp.vegmap.1nnegl.ctl" )      
  130.  
  131.   MakeMenu(cr, "Cryosphere")
  132.       MakeMenuItem(smi,  cr, "SMMR Nimbus-7 Sea Ice Concentration", Open, "open data/hydrology/sea_ice/smmr_n07.seaice.1nmego.ctl" )
  133.       MakeMenuItem(ssi8, cr, "SSMI DMSP-F8 Sea Ice Concentration", Open, "open data/hydrology/sea_ice/ssmi_f08.seaice.1nmego.ctl" )
  134.       MakeMenuItem(ssi1, cr, "SSMI DMSP-F11 Sea Ice Concentration", Open, "open data/hydrology/sea_ice/ssmi_f11.seaice.1nmego.ctl" )
  135.       MakeMenuItem(ssi3, cr, "SSMI DMSP-F13 Sea Ice Concentration", Open, "open data/hydrology/sea_ice/ssmi_f13.seaice.1nmego.ctl" )
  136.       MakeMenuItem(xx, cr, "__________________________",  NULL, NULL )
  137.       MakeMenuItem(sms, cr, "SMMR Snow Depth", Open, "open data/hydrology/smmr_snow/smmr_snw.depth.1nmegl.ctl" )
  138.  
  139.   MakeMenu(hy, "Hydrology")
  140.       MakeMenuItem(gcp, hy, "GPCC Precipitation measurements", Open, "open data/hydrology/precip/gpcp/gpcc/gpcc_gag.pcp.1nmegl.ctl" )
  141.       MakeMenuItem(gco, hy, "GPCC Precipitation observations", Open, "open data/hydrology/precip/gpcp/gpcc/gpcc_gag.obs.1nmegl.ctl" )
  142.       MakeMenuItem(xx, hy, "__________________________",  NULL, NULL )
  143.       MakeMenuItem(gpp, hy, "GPCP Precipitation measurements", Open, "open data/hydrology/precip/gpcp/gpcp_v1a_cmb/gpcp_v1a.psg.1nmegg.ctl" )
  144.       MakeMenuItem(gpo, hy, "GPCP Precipitation errors", Open, "open data/hydrology/precip/gpcp/gpcp_v1a_cmb/gpcp_v1a.esg.1nmegg.ctl" )
  145.       MakeMenuItem(xx, hy, "__________________________",  NULL, NULL )
  146.       MakeMenuItem(fad, hy, "FAO Depth", Open, "open data/hydrology/soil/fao_soil.depth.1nnegl.ctl" )
  147.       MakeMenuItem(fas, hy, "FAO Slope", Open, "open data/hydrology/soil/fao_soil.slope.1nnegl.ctl" )
  148.       MakeMenuItem(fax, hy, "FAO Texture", Open, "open data/hydrology/soil/fao_soil.textur.1nnegl.ctl" )
  149.       MakeMenuItem(fat, hy, "FAO Type", Open, "open data/hydrology/soil/fao_soil.type.1nnegl.ctl" )
  150.       MakeMenuItem(xx, hy, "__________________________",  NULL, NULL )
  151.       MakeMenuItem(ssp, hy, "SSMI Precipitable Water", Open, "open data/hydrology/ssmi_wvap/ssmi.prch2o.1nmego.ctl" )  
  152.  
  153.   MakeMenu(mo, "Monsoon")
  154.       MakeMenuItem(smp, mo, "SMMR Monsoon Precipitation Rate month", Open, "open data/hydrology/precip/smmr_monsoon/smmr.rain.1nmeo1.ctl" )
  155.       MakeMenuItem(sma, mo, "SMMR Monsoon Precipitation Rate annual", Open, "open data/hydrology/precip/smmr_monsoon/smmr.rain.1naeo1.ctl" )
  156.       MakeMenuItem(smc, mo, "SMMR Monsoon Precipitation Rate climate monthly", Open, "open data/hydrology/precip/smmr_monsoon/clim/smmr.rain.1nceo1.ctl" )
  157.       MakeMenuItem(smx, mo, "SMMR Monsoon Precipitation Rate climate", Open, "open data/hydrology/precip/smmr_monsoon/clim/smmr.rain.1nxeo1.ctl" )
  158.       MakeMenuItem(sma1, mo, "SMMR Monsoon Precipitation Rate annual amplitude", Open, "open data/hydrology/precip/smmr_monsoon/harm/smmr.amp1.1nneo1.ctl" )
  159.       MakeMenuItem(sma2, mo, "SMMR Monsoon Precipitation Rate semi-annual amplitude", Open, "open data/hydrology/precip/smmr_monsoon/harm/smmr.amp2.1nneo1.ctl" )
  160.       MakeMenuItem(smp1, mo, "SMMR Monsoon Precipitation Rate annual phase", Open, "open data/hydrology/precip/smmr_monsoon/harm/smmr.phase1.1nneo1.ctl" )
  161.       MakeMenuItem(smp2, mo, "SMMR Monsoon Precipitation Rate semi-annual phase", Open, "open data/hydrology/precip/smmr_monsoon/harm/smmr.phase2.1nneo1.ctl" )
  162.   
  163.   MakeMenu(st, "Temperatures")
  164.       MakeMenuItem(tf, st, "NCEP Sea Surface Temperature ", Open, "open data/surf_temp_press/ncep_sst/sst/ncep.sst.1nmego.ctl" )
  165.       MakeMenuItem(tg, st, "NCEP SST Anomalies", Open, "open data/surf_temp_press/ncep_sst/anom/ncep.anom.1nmego.ctl" )
  166.       MakeMenuItem(th, st, "NCEP SST Climate monthly", Open, "open data/surf_temp_press/ncep_sst/clim/ncep.clim.1nmego.ctl" )
  167.       MakeMenuItem(xx, st, "__________________________",  NULL, NULL )
  168.       MakeMenuItem(t1, st, "East Anglia Temperature Anomalies", Open, "open data/surf_temp_press/tmp_dev/e_anglia/e_anglia.tmpdev.1nmagg.ctl" )
  169.   
  170.   MakeButton(help, "Help", Browse, software/grads/help.txt)
  171.   
  172. # Once you define buttons and menus you may want to enforce their
  173. # relative position. The very first button is always placed at the
  174. # upper left corner.
  175. # ----------------------------------------------------------------
  176.  
  177.   # First row 
  178.   SetWidgetPos(file, PLACE_UNDER, root, NO_CARE, NULL)
  179.   SetWidgetPos(options, PLACE_UNDER, root, PLACE_RIGHT, file )
  180.   SetWidgetPos(dim, PLACE_UNDER, root, PLACE_RIGHT, options )
  181.   SetWidgetPos(prompt, PLACE_UNDER, root, PLACE_RIGHT, dim )
  182.   SetWidgetPos(help, PLACE_UNDER,   root, PLACE_RIGHT, prompt)
  183.  
  184.   # Second row
  185.   SetWidgetPos(ac, PLACE_UNDER, file, NO_CARE, NULL)
  186.   SetWidgetPos(bi, PLACE_UNDER, file, PLACE_RIGHT, ac)
  187.   SetWidgetPos(cr, PLACE_UNDER, file, PLACE_RIGHT, bi)
  188.     
  189.   # Third row
  190.   SetWidgetPos(hy, PLACE_UNDER, ac, NO_CARE, NULL)
  191.   SetWidgetPos(mo, PLACE_UNDER, ac, PLACE_RIGHT, hy)
  192.   SetWidgetPos(st, PLACE_UNDER, ac, PLACE_RIGHT, mo)
  193.  
  194.   # forth row
  195.   SetWidgetPos(fresh, PLACE_UNDER, mo, NO_CARE, NULL )
  196.   SetWidgetPos(var, PLACE_UNDER, mo, PLACE_RIGHT, fresh )
  197.   SetWidgetPos(prev, PLACE_UNDER, mo, PLACE_RIGHT, var )
  198.   SetWidgetPos(displ, PLACE_UNDER, mo, PLACE_RIGHT, prev )
  199.   SetWidgetPos(next, PLACE_UNDER, mo, PLACE_RIGHT, displ )
  200.  
  201.   # Fith row
  202.   SetWidgetPos(hold, PLACE_UNDER, fresh, NO_CARE, NULL )
  203.   SetWidgetPos(clear, PLACE_UNDER, fresh, PLACE_RIGHT, hold)
  204.   SetWidgetPos(rein, PLACE_UNDER, fresh, PLACE_RIGHT, clear )
  205.   SetWidgetPos(quit, PLACE_UNDER, fresh, PLACE_RIGHT, rein )
  206.  
  207. # In order to make your widgets appear on the screen you *must*
  208. # issue this command.
  209. # -------------------------------------------------------------
  210.   ShowDisplay()
  211.  
  212. # After your widgets appear on the screen, you can set the color 
  213. # of your widgets. The following colors are pre-defined:
  214. # white, back, red, green, blue, yellow.
  215. # --------------------------------------------------------------
  216.   GetNamedColor(gray,"grey")
  217.   GetNamedColor(Blue,"LightSkyBlue")
  218.   GetNamedColor(Green,"Green")
  219.   GetNamedColor(pink,"gold")         # pink is actually gold, get it?
  220.   AllFgColor(black)
  221.   AllBgColor(Blue)
  222.   SetBgColor(root,white)
  223.   SetFgColor(root,red)
  224.   SetBgColor(file,green)
  225.   SetBgColor(options,green)
  226.   SetBgColor(dim,green)
  227.   SetFgColor(prompt,yellow)
  228.   SetBgColor(prompt,red)
  229.   SetFgColor(help,yellow)
  230.   SetBgColor(help,red)
  231.   SetBgColor(prev,pink)
  232.   SetBgColor(displ,pink)
  233.   SetBgColor(next,pink)
  234.   SetBgColor(play,pink)
  235.   SetBgColor(fresh,pink)
  236.   SetBgColor(var,pink)
  237.   SetBgColor(hold,gray)
  238.   SetBgColor(clear,gray)
  239.   SetBgColor(reset,gray)
  240.   SetBgColor(rein,gray)
  241.   SetBgColor(quit,gray)
  242.  
  243. # And you must call this function at the end of your first GUI script.
  244. # This instructs the X Toolkit to enter an infinite loop, monitoring
  245. # keyboard and mouse events. Repeating: you *must* call MainLoop().
  246. # -------------------------------------------------------------------
  247.   MainLoop()
  248.  
  249. #........................................................................
  250. #
  251. # APPENDIX: Currently available callback functions
  252. #
  253. #     Browse    Opens a text file, such as a help file, on a separate
  254. #               window.
  255. #     Cmd       Executes a generic GrADS command
  256. #     CmdStr    Like Cmd, but the user is prompted for an additional
  257. #               string to be appended to the GrADS command.
  258. #     CmdWin    Invokes a window for GrADS command line interface.
  259. #               User can click on past commands from a list.
  260. #     CmdLine   Invokes the standard GrADS command line interface.
  261. #               When the command line is active the other widgets
  262. #               are not available (may be fixed in the future).
  263. # CloseWindow   Closes the current window (do not use for your primary
  264. #               window or you will get stuck).
  265. #     Display   A generic callback for displaying the current variable
  266. #               (or expression) set with VarSel. The options are:
  267. #                  <<    decrements time and executes display
  268. #                 PLAY   starts animation from current to last time
  269. #                DISPLAY just executes display
  270. #                  >>    increments time and  executes display
  271. #               If the "hold" toggle state is OFF (the default),
  272. #               the screen is cleared before displaying.
  273. #     Edit      Like browse, but the user can edit the file. This simple
  274. #               text editor is integrated with GrADS, providing a very
  275. #               elementary Integrated Development Enviroment (IDE) for
  276. #               GrADS scripts. In particular, the script being edited
  277. #               can be executed by clicking on a button (not
  278. #               implemented yet).
  279. #     FileSel   Pops up a scrollable list and asks the user to selected
  280. #               a file among the currently opened GrADS files (including
  281. #               SDFs). The selected file becomes the default.
  282. #     Load      Pops up a "file finder" widget, and after the user
  283. #               clicks on a file name it executes a GrADS command
  284. #               specified as the last argument. In case of "open" or 
  285. #               "sdfopen" the files becomes the default, and the
  286. #               user is asked to select a variable from this file.
  287. #     Open      Similar to Load, but the file name must be specified.
  288. #     Toggle    Turn internal options ON/OFF. The only internal
  289. #               option currently supported is "hold". This callback is
  290. #               usually used with MakeToggle(), see example above.
  291. #     VarSel    Pops up a scrollable list and asks the user to selected
  292. #               a variable from the default file. The user can also
  293. #               type a generic GrADS expression instead of selecting
  294. #               a single variable.
  295. #     NULL      Does not do anything, used for inactive buttons.
  296. #
  297. #........................................................................
  298.